安裝 MySQL
- 拉取 MySQL 映像檔
docker pull mysql
- 啟動容器
docker run --name 自訂容器名稱 -e MYSQL_ROOT_PASSWORD=要設定的密碼 -d mysql
- 預設用戶名為 root
- 確認是否啟動
docker ps
- 進入到 MySQL
docker exec -it 自訂容器名稱 mysql -uroot -p
- 預設用戶名為 root
- 就可以使用 SQL 指令操作 (Ctrl+Z 退出)
匯出 Databases
- 先確認 MySQL 語法是否有衝突,例如:create datbase或是drop database,要記得註解掉或是刪除,因為匯入時,會自動執行。
- 使用
cd
指令到要匯出的資料夾位置 docker exec -it 容器名稱 mysqldump -u root -p 要匯出的資料庫名稱 > 要匯出的檔名.sql
- 預設用戶名為 root
- 輸入密碼後就可以產生匯出檔
- 查看匯出檔,將第一行的文字內容 Enter password: 刪除,避免匯入時產生錯誤
匯入 Databases
- 使用
cd
指令到要匯入的資料夾位置 - 文件複製到根目錄
docker cp 要匯出的檔名.sql 容器名稱:/
- 進入容器
docker exec -it 容器名稱 bash
- 匯入資料庫
mysql -u root -p --default-character-set=utf8 要匯出的資料庫名稱 < 要匯出的檔名.sql
- 進入到 MySQL
mysql -u root -p
如果匯入的中文是亂碼就要看這邊
- 先檢查.sql檔案是不是中文,是的話通常就是這個原因
- 進入到 MySQL
docker exec -it 自訂容器名稱 mysql -uroot -p
- 確認是否為 utf8mb4 編碼
SHOW VARIABLES LIKE 'character_set%';
- 進入容器
docker exec -it 容器名稱 bash
手動建立文件
echo "[client]" > /etc/mysql/my.cnf echo "default-character-set = utf8mb4" >> /etc/mysql/my.cnf echo "[mysql]" >> /etc/mysql/my.cnf echo "default-character-set = utf8mb4" >> /etc/mysql/my.cnf echo "[mysqld]" >> /etc/mysql/my.cnf echo "character-set-server = utf8mb4" >> /etc/mysql/my.cnf echo "collation-server = utf8mb4_unicode_ci" >> /etc/mysql/my.cnf
- 離開
exit
- 重啟
docker restart 容器名稱
- 複製到配置目錄
docker cp my.cnf 容器名稱:/etc/mysql/my.cnf
- 重新啟動 Docker 再次重新匯入